package cn.bopomo.dealer.base.db;

import java.util.List;

import cn.bopomo.dealer.base.exception.SystemException;
import cn.bopomo.dealer.base.util.Page;
import cn.bopomo.dealer.base.vo.AuGroup;
import cn.bopomo.dealer.base.vo.AuthorizeList;
import cn.bopomo.dealer.base.vo.ModuleList;

public interface IAuthorizeDAO {

	/**
	 * 增加权限
	 * @param authorize 	要增加的权限明细
	 * @return
	 */
	String insertAuthorize(AuthorizeList authorize);
	
	/**
	 * 更新权限
	 * @param authorize 	要更改的权限明细
	 * @return
	 */
	String updateAuthorize(AuthorizeList authorize);
	
	/**
	 * 删除权限
	 * @param authorize		要删除的权限明细
	 * @return
	 */
	String deleteAuthorize(AuthorizeList authorize);
	
	/**
	 * 根据标签查找权限
	 * @param tag		参数标签
	 * @return
	 * @throws SystemException
	 */
	AuthorizeList selectAuthorize(String tag) throws SystemException;
	
	/**
	 * 有问题........
	 * @param uId
	 * @return
	 * @throws SystemException
	 */
	//AuthorizeList selectAuthorize(int uId) throws SystemException;
	
	/**
	 * 根据权限ID查找权限明细
	 * @param aId		要查找的权限的ID
	 * @return
	 * @throws SystemException
	 */
	AuthorizeList selectAuthorize(Integer aId) throws SystemException;
	
	/**
	 * 查询数据库里在特定功能模块内，查找特定名称的权限
	 * @param name          特定名称参数
	 * @param moduleId		特定模块参数
	 * @return
	 * @throws SystemException
	 */
	AuthorizeList selectAuthorizeByName(String name,int moduleId) throws SystemException;
	
	/**
	 * 根据执行action查询权限明细
	 * @param action
	 * @return
	 * @throws SystemException
	 */
	AuthorizeList selectAuthorizeByAction(String action) throws SystemException;
	
	/**
	 * 显示所有权限列表
	 * @return
	 * @throws SystemException
	 */
	List selectAuthorize() throws SystemException;
	
	/**
	 * 根据模块显示该模块下的权限列表
	 * @param module
	 * @return
	 * @throws SystemException
	 */
	List selectAuthorize(ModuleList module) throws SystemException;
	
	/**
	 * 分页显示权限列表
	 * @param pageSize   		第几页
	 * @param rowsPerPage		每页显示数目
	 * @return
	 * @throws Exception
	 */
	Page selectAuthorize(int pageSize, int rowsPerPage) throws Exception;
	
	List selectAuthorizeByTags(final String tagList);
	
	
	/**
	 * 查询数据库里在特定功能模块内，查找特定名称的权限
	 * @param name          特定名称参数
	 * @param tag			特定标签参数
	 * @param id			特定id参数
	 * @return
	 * @throws SystemException
	 */
	AuthorizeList selectAuthorizeByNameOrTagNotId(String name,String tag,Integer id) throws SystemException;
	
}
